package cn.samehope.pet.util;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.util.HashMap;

import cn.samehope.pet.Consts;

import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.jfinal.kit.LogKit;
import com.jfinal.kit.PathKit;

public class QrCodeUtil {
	
	@SuppressWarnings({ "finally", "rawtypes", "unchecked" })
	public static String createQrCode(String url, String openId) {
        int width = 300;
        int height = 300;
        String format = "png";
        //定义二维码的参数
        HashMap map = new HashMap();
        //设置编码
        map.put(EncodeHintType.CHARACTER_SET, "utf-8");
        //设置纠错等级
        map.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
        map.put(EncodeHintType.MARGIN, 2);

        String codePath = "";
        try {
            //生成二维码
        	codePath = File.separator + Consts.qrCodePath + File.separator + openId + ".png";
            BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, width, height);
            Path file = new File(PathKit.getWebRootPath() + codePath).toPath();
            MatrixToImageWriter.writeToPath(bitMatrix, format, file);
        } catch (WriterException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
        	return codePath;
        }
    }
	
	public static void main(String[] args) {
		LogKit.info(createQrCode("22222222", "1111111"));
	}

}
